package br.com.ruidobrasil.util {
	
	import mx.controls.dataGridClasses.DataGridColumn;
	
	public class FormatacaoLabelUtil {
		
		public static function defaultDatetimeLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
			var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));

            return FormataData.formataDataHora(valor as Date);
        } 

        public static function defaultDateLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
			var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));
			
            return FormataData.formataData(valor as Date);
        } 
        
        public static function defaultHoraLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
			var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));

            return FormataData.formataHora(valor as Date);
        } 

        public static function defaultValorNumericoLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
        	var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));

            return FormataNumero.formata(Number(valor));
        } 
        
         public static function defaultValorRealLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
        	var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));

            return ("R$ "+FormataNumero.formata(Number(valor)));
        } 
        
        
        public static function defaultCNPJLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
        	var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));

            return FormatUtil.formataCPFCNPJ(String(valor));
        }
        
        public static function defaultTelefoneLabelFunction(objeto:Object, coluna:DataGridColumn):String {     
        	var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));

            return FormatUtil.formataTelefone(String(valor));
        }

		public static function defaultLabelFunction(objeto:Object, coluna:DataGridColumn):String {
			var valor:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));

			return (valor == null) ? "" : String(valor);
		}

		public static function defaultBooleanLabelFunction(objeto:Object, coluna:DataGridColumn):String {
			var obj:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));
			var retorno:String = "";
			
			if (obj != null) {
				if (obj is Boolean) {
					retorno = (String(obj.valor) == "true")? "SIM": "NÃO";
				}else{
					retorno = (String(obj) == "true")? "SIM": "NÃO";
				}
			}
			return retorno;
        }
        
        public static function defaultBolAtivoLabelFunctionSimNao(objeto:Object):String {
			var retorno:String = "";
			
			switch (objeto.bolAtivo) {
				
				case "true":
					retorno = "SIM";
					break;
				case "false":
					retorno = "NÃO";
					break;
				default: 
					retorno = "---";
					break;
			}
			
			return retorno;
        }
        
        public static function defaultPublicarSlideLabelFunctionSimNao(objeto:Object):String {
			var retorno:String = "";
			
			switch (objeto.publicarSlide) {
				
				case "true":
					retorno = "SIM";
					break;
				case "false":
					retorno = "NÃO";
					break;
				default: 
					retorno = "---";
					break;
			}
			
			return retorno;
        }
        
        public static function defaultBooleanSimFunction(objeto:Object, coluna:DataGridColumn):String {     
        	var obj:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));
			var retorno:String = "";
			
			if (obj != null){
				if (obj is Boolean){
					retorno = (String(obj.valor) == "true")? "SIM": "";
				}else{
					retorno = (String(obj) == "true")? "SIM": "";
				}
			}
			return retorno;
        }
        
        public static function defaultBooleanAtivoInativoFunction(objeto:Object, coluna:DataGridColumn):String {     
        	var obj:Object = ReflectionUtils.recuperarPropriedade(objeto, recuperarNomePropriedade(coluna));
			var retorno:String = "";
			
			if (obj != null){
				if (obj is Boolean){
					retorno = (String(obj.valor) == "true")? "ATIVO": "INATIVO";
				}else{
					retorno = (String(obj) == "true")? "ATIVO": "INATIVO";
				}
			}
			return retorno;
        }
        
        public static function recuperarNomePropriedade(coluna:DataGridColumn):String {
			return (coluna is DataGridColumn && DataGridColumn(coluna).dataField != null)
					? DataGridColumn(coluna).dataField : coluna.dataField;
		}
	}
}